package interfaces.view;

/***
 * The StateProperties object is a singleton that will be referred by the CellDrawer object.
 * It behaves like a hash table - it stores values (shapes and colors) for specific keys (states).
 * If a state is not stored in the table, the methods that return the associated shapes and color
 * will return a default value.
 * 
 * @author tomerborenstein
 *
 */

public interface StateProperties {
	
	/***
	 * This method takes a String (state) as a parameter and returns the color of that state
	 * as a String.
	 * 
	 * @param state - a String that represents the state
	 * @return color - a String that represents the color of the given state
	 */
	public String stateColor(String state);
	
	/***
	 * This method takes a String (state) as a parameter and returns the shape of that state
	 * as a String.
	 * 
	 * @param state - a String that represents the state
	 * @return shape - a String that represents the shape of the given state
	 */
	public String stateShape(String state);
	
	/***
	 * This method lets you add a state to the StateProperties object so that it can be later
	 * recalled with its associated shape an color.
	 * 
	 * @param state - a String that represents the state
	 * @param color - a String that represents the color associated with the state
	 * @param shape - a String that represents the shape associated with the state
	 */
	public void addState(String state, String color, String shape);
	
	/***
	 * This method lets you remove a state from the StateProperties object so that it can no longer
	 * be recalled. If the state already is not stored in StateProperties, this method has no effect.
	 * 
	 * @param state - a string that represents the state
	 */
	public void removeState(String state);

}
